[求]深入理解计算机系统习题作案

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:58:06
练习题3.6
在编写循环的代码中
for(i = 0; i < n; i++)
v += i;
我们发现下面的汇编代码行:
xorl %edx,%edx
请解释为什么我们的C代码中没有EXCLUSIVE-OR(异或)运算符,这里却会有这样的指令,这条指令实现的是C程序中什么操作?

我也是刚刚看到这里。
编写代码如下:
void main()
{
int n = 5;
int v = 0;
for(int i=0;i<n;++i)
v += i;
}
查看反汇编代码会发现,xorl %edx, %edx这句话是在最后程序结束时出现的,对%edx进行异或操作的结果是将%edx清零。
为什么要把它清零,我查了一下,有很多讨论~但是并未得到一个比较确定的答案~